//package com.slt.jvm.book.chapter7;
//
///**
// * @author zzm
// */
//
//import java.io.IOException;
//import java.io.InputStream;
//
///**
// * 类加载器与instanceof关键字演示
// *
// * @author zzm
// */
//public class ClassLoaderTest {
//
//    public static void main(String[] args) throws Exception {
//
//        ClassLoader myLoader = new ClassLoader() {
//            @Override
//            public Class<? loadClass(String name) throws ClassNotFoundException {
//                try {
//                    String fileName = name.substring(name.lastIndexOf(".") + 1) + ".class";
//                    InputStream is = getClass().getResourceAsStream(fileName);
//                    if (is == null) {
//                        return super.loadClass(name);
//                    }
//                    byte[] b = new byte[is.available()];
//                    is.read(b);
//                    return defineClass(name, b, 0, b.length);
//                } catch (IOException e) {
//                    throw new ClassNotFoundException(name);
//                }
//            }
//        };
//
//        Object obj = myLoader.loadClass("com.example.jvmstudy.book.chapter7.ClassLoaderTest").newInstance();
//
//        System.out.println(obj.getClass());
//        /**
//         * Java虚拟机中同时存在了两个ClassLoaderTest类，一个是由虚拟机的应用程序类加载器所加载的，
//         * 另外一个是由我们自定义的类加载器加载的，虽然它们都来自同一个Class文件，
//         * 但在Java虚拟机中仍然是两个互相独立的类，做对象所属类型检查时的结果自然为false。
//         *
//         */
//        System.out.println(obj instanceof com.example.jvmstudy.book.chapter7.ClassLoaderTest);
//    }
//}
